#pragma once
#include "../MainLoop/Application.h"
#include "SceneObjects.h"

#include <string>
#include <glm\gtc\quaternion.hpp>
#include <CL\cl.h>

class Scene
{
private:


protected:
	// OpenGL
	size_t mSize;
	GLuint mRenderingProgram;
	GLuint mVao;
	GLuint mindexBuffer;
	GLuint mvertexBuffer;

	GLuint mvertexShaderID;
	GLuint mfragmentShaderID;
	GLuint mprogramID;
	GLuint mTextureID;

	// Shader Variables
	GLint worldviewprojLocation;

	// OpenCL
	cl_mem* mclBuff;
	cl_kernel mKernel;

	SceneObjects mObjects;

	// Camera and Projection
	//glm::mat4x4 mView;
	glm::mat4x4 mProjection;
	glm::vec3 mcameraTarget;
	glm::vec3 mcameraPos;
	glm::quat mrotationQt;

public:
	Scene();

	void Initialize();
	void Destroy();
	void Update( double dTime, double dElapsedTime );
	void Render();

	void LoadObj(std::string fileName);
};